Описание
Объект Workspace определяет именованный сеанс работы
пользователя. Этот объект содержит открытые базы данных и предоставляет
механизмы для одновременного выполнения транзакций, а также, в рабочей области
Microsoft Jet, поддерживает работу защищенной рабочей группы. Этот объект
также определяет, осуществляется ли доступ к внешним данным через ядро базы
данных Microsoft Jet или через механизм ODBCDirect.
Замечания
Объект Workspace является непостоянным объектом, который
определяет, осуществляется ли доступ к внешним данным через ядро базы данных
Microsoft Jet или через механизм ODBCDirect. Объект
Workspace используется для управления текущим сеансом работы или для
запуска дополнительного сеанса. В каждом работы допускается открытие нескольких
баз данных или подключений, а также выполнение транзакций. Например, данный
объект позволяет:
1. Открыть именованный сеанс с использованием свойств
Name, UserName и Type. Сеанс работы создает область
определения, в которой возможно открытие нескольких баз данных и проведение
одной серии вложенных транзакций.
2. Вызвать метод Close для закрытия
сеанса.
3. Вызвать метод OpenDatabase для открытия одной или
нескольких существующих баз данных в данном объекте Workspace.
4.
Использовать методы BeginTrans, CommitTrans и Rollback для
управления вложенными транзакциями в пределах объекта Workspace, а также
использовать несколько объектов Workspace для одновременного выполнения
нескольких пересекающихся транзакций.
Кроме того, при работе с базой данных
Microsoft Jet имеется возможность установить систему защиты, основанную
на использовании имен пользователей и паролей:
1. Семейства Groups и
Users позволяют установить разрешения на доступ к объектам для
пользователей и групп в объекте Workspace.
2. Семейство
IsolateODBCTrans позволяет изолировать множественные транзакции, в
которых используется одна и та же база данных, подключенная к ядру Microsoft
Jet.
При первой ссылке или первом вызове объекта Workspace
автоматически создается стандартная рабочая область
DBEngine.Workspaces(0), в которой свойства Name и UserName
по умолчанию получают значения, соответственно, "#Default Workspace#" и
"Admin". Если система защиты баз данных активизирована, то значением
свойства UserName становится имя подключенного пользователя.
Для
создания объекта Workspace ODBCDirect, позволяющего избежать загрузки
ядра базы данных Microsoft Jet в память, следует задать константу
dbUseODBC в свойстве DefaultType объекта DBEngine или в
аргументе тип метода CreateWorkspace.
В транзакциях участвуют все базы
данных, входящие в состав данного объекта Workspace, даже если при этом
открыто несколько объектов Database. Например, если пользователь вызывает
метод BeginTrans, обновляет несколько записей в базе данных, а затем
удаляет записи в другой базе данных, то при вызове метода Rollback
свертываются (отменяются) и операции удаления, и операции обновления. Для того
чтобы транзакции выполнялись независимо для разных объектов Database,
следует создать или открыть независимые объекты Workspace.
Объекты
Workspace создаются с помощью метода CreateWorkspace. Если
предполагается ссылаться на новый объект Workspace через семейство, то
необходимо после создания объекта добавить этот объект в семейство
Workspaces.
Допускается также использование нового объекта
Workspace без его добавления в семейство. Ссылки на объект при этом
осуществляются через объектную переменную, которой присвоен объект.
При
ссылках на объект Workspace используют его порядковый номер в семействе
или значение свойства Name (имя):
DBEngine.Workspaces(0) DBEngine.Workspaces("имя") DBEngine.Workspaces![имя]
Пример
Следующая программа использует метод CreateWorkspace для
создания рабочей области Microsoft Jet и рабочей области
ODBCDirect. Затем печатаются списки свойств двух рабочих областей.
Sub CreateWorkspaceX() Dim wrkODBC As Workspace Dim wrkJet As Workspace Dim wrkLoop As Workspace Dim prpLoop As Property ' Создает рабочую область ODBCDirect. До создания рабочей ' области Microsoft Jet, ядро базы данных Microsoft Jet ' не будет загружено в память. Set wrkODBC = CreateWorkspace("ODBCWorkspace", "admin", "", dbUseODBC) Workspaces.Append wrkODBC DefaultType = dbUseJet ' Создает безымянный объект Workspace с типом, ' указанным в свойстве DefaultType объекта DBEngine ' (dbUseJet). Set wrkJet = CreateWorkspace("", "admin", "") ' Отображает семейство Workspaces. Debug.Print "Объекты Workspace в семействе Workspaces:" For Each wrkLoop In Workspaces Debug.Print " " & wrkLoop.Name Next wrkLoop With wrkODBC ' Отображает семейство Properties объекта ODBCDirect. Debug.Print "Свойства " & .Name On Error Resume Next For Each prpLoop In .Properties Debug.Print " " & prpLoop.Name & " = " & prpLoop Next prpLoop On Error GoTo 0 End With With wrkJet ' Отображает семейство Properties рабочей области ' Microsoft Jet. Debug.Print "Свойства безымянной рабочей области Microsoft Jet" On Error Resume Next For Each prpLoop In .Properties Debug.Print " " & prpLoop.Name & " = " & prpLoop Next prpLoop On Error GoTo 0 End With wrkODBC.Close wrkJet.Close End Sub